/*
* Copyright 2016 Yonyou Auto Information Technology（Shanghai） Co., Ltd. All Rights Reserved.
*
* This software is published under the terms of the YONYOU Software
* License version 1.0, a copy of which has been included with this
* distribution in the LICENSE.txt file.
*
* @Project Name : marketing-wechat-open-api
*
* @File name : BaseController.java
*
* @Author : LiuJun
*
* @Date : 2016年12月8日
*
----------------------------------------------------------------------------------
*     Date       Who       Version     Comments
* 1. 2016年12月8日    LiuJun    1.0
*
*
*
*
----------------------------------------------------------------------------------
*/
	
package com.yonyou.gmcc.gateway.wechat.controller;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.marketing.common.constants.CookieConstant;
import org.marketing.common.util.CheckUtil;
import org.marketing.common.util.CookieSecurityUtil;

/**
*
* @author LiuJun
* 基础controller
* @date 2016年12月8日
*/
public abstract class BaseController {
    
    /**
    *
    * @author LiuJun
    * cookies中获取关注着openId
    * @date 2016年12月8日
    * @param request
    * @return
    * @throws Exception
    */
    protected String getOpenId(HttpServletRequest request)throws Exception{
        return getCookiesByKey(request,CookieConstant.WECHAT_COOKIE_OPENID);
    }
    
    /**
    *
    * @author LiuJun
    * cookies中获取授权方appid
    * @date 2016年12月8日
    * @param request
    * @return
    * @throws Exception
    */
    protected String getAuthorizerAppid(HttpServletRequest request)throws Exception{
        return getCookiesByKey(request,CookieConstant.WECHAT_COOKIE_DEALER_APPID);
    }
    
    /**
    *
    * @author LiuJun
    * cookies中获取经销商代码
    * @date 2016年12月8日
    * @param request
    * @return
    * @throws Exception
    */
    protected String getDealerCode(HttpServletRequest request)throws Exception{
        return getCookiesByKey(request,CookieConstant.WECHAT_COOKIE_DEALERCODE);
    }
    
    /**
    *
    * @author LiuJun
    * cookies中获取潜客用户ID
    * @date 2016年12月8日
    * @param request
    * @return
    * @throws Exception
    */
    protected Long getPotentialUserId(HttpServletRequest request)throws Exception{
        String potentialUserId = getCookiesByKey(request,CookieConstant.WECHAT_COOKIE_POTENTIALUSERID);
        if(CheckUtil.NullOrEmpty(potentialUserId)){
           return null;
        }
        return Long.valueOf(potentialUserId);
    }

    
    /**
    *
    * @author LiuJun
    * reponseCookies
    * @date 2016年12月8日
    * @param key
    * @param value
    * @param response
    * @throws Exception
    */
    protected void reponseCookies(String key, String value, HttpServletResponse response) throws Exception {
        Cookie cookies = new Cookie(key,CookieSecurityUtil.encrypt(value));
        cookies.setPath("/");
        response.addCookie(cookies);
    }
    
    
    /**
    *
    * @author LiuJun
    * getCookiesByKey
    * @date 2016年12月8日
    * @param request
    * @param key
    * @return
    * @throws Exception
    */
    protected String getCookiesByKey(HttpServletRequest request,String key) throws Exception {
        Cookie[] cookies = request.getCookies();
        if(cookies != null) {
            for(Cookie cookie : cookies) {
                if(key.equals(cookie.getName())) {
                     return CookieSecurityUtil.decrypt(cookie.getValue());
                }
            }
        }
        return null;
    }
    


}
